package cn.zyy.hotel.controller.admin;

import cn.zyy.hotel.utils.SystemConstant;
import cn.zyy.hotel.utils.UUIDUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/admin/file")
public class FileController {

    //文件上传
    @RequestMapping("/uploadFile")
    public Object uploadFile(MultipartFile file, HttpServletRequest req){
        //创建Map集合保存返回的JSON数据
        Map<String, Object> map = new HashMap<String, Object>();
        //判断是否有选中文件
        if (!file.isEmpty()){
            //获取源文件名
            String oldName = file.getOriginalFilename();
            //获取文件的后缀名
            String extension = StringUtils.getFilenameExtension(oldName);
            //生成新的文件名，防止重名文件
            String newName = UUIDUtils.randomUUID()+"."+extension;
            //为了解决同一个文件夹下文件过多的问题，使用日期作为文件夹管理
            String datePath = new SimpleDateFormat("yyyyMMdd").format(new Date());
            //组装最后的文件名
            String fileName = datePath+"\\"+newName;
            //创建文件对象
            File img = new File(SystemConstant.IMAGE_UPLOAD_PATH, fileName);
            //判定该文件夹是否存在，不存在就创建文件夹
            if (!img.getParentFile().exists()){
                img.getParentFile().mkdirs();
            }
            try {
                //文件上传
                file.transferTo(img);
                //状态码
                map.put("code",0);
                map.put("msg","上传成功");
                HashMap<String, Object> imgMap = new HashMap<String, Object>();
                imgMap.put("src",req.getContextPath()+"/imgs/"+fileName);
                map.put("data",imgMap);
                //隐藏域的值
                map.put("imagePath",fileName);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return map;
    }


}
